// 路由鉴权配置文件
import router from '@/router'
import pinia from '@/stores'
import { useUserStore } from '@/stores/modules/user'
import nprogress from 'nprogress'
const userStore = useUserStore(pinia)
import {useLoginDialogStore} from '@/stores/modules/loginDialog.js'
const loginDialogStore = useLoginDialogStore();

// 路由跳转前 前置守卫
router.beforeEach(async (to, from, next) => {
  nprogress.start()
  const token = userStore.token
  const nickName = userStore.nickName

  // 放行接口
  // if (to.path === '/customer' || to.path === '/customer/index' || to.path === '/face' || to.path === '/phone/checkout') {
  //   if (userStore.token) {
  //     const role = await userStore.userInfo()
  //   }
  //   next();
  //   return
  // }



  if (token) {
    // if (!nickName) {
    //   await userStore.userInfo()
    // }
    // 如果token存在则代表已登录 此时禁止访问login页
    if (to.path === '/') {
        next()
      return
    } else {
      // 没有用户信息首先获取用户信息
      //    用户信息获取失败包括 1.客户端token被修改 2.token过期

      if (nickName) {
        // 如果有检查是不是访问首页 / 如果是根据角色重定向至对应界面
        if (to.path === '/' || '') {
            next({ path: '/' })
        } else {
          next()
          return
        }
      } else {
        // 如果没有则获取用户信息
        try {
          // 获取成功
          console.log('获取信息去' , nickName)
          const role = await userStore.userInfo()

          if (to.path === '/' || '') {
              next({ path: '/' })
            return
          } else {
            next()
            return
          }
        } catch (e) {
          await userStore.logout()
          next({ path: '/login', query: { redirect: to.path } })
        }
      }
    }
  } else {
    // 如果未登录只能访问login
    if (to.path === '/') {
      next()
      return
    } else {
      loginDialogStore.isShow = true
    }
  }
})

router.afterEach(() => {
  nprogress.done()
})
